#ifndef WUBI_SYMBOL_H
#define WUBI_SYMBOL_H

#include <string>
#include <vector>
#include <map>
#include "src/symbols/radicals/radical_semantic.h"

class WuBiSymbol {
private:
    std::string code;                    // 五笔编码
    std::string character;               // 对应汉字
    std::vector<std::string> radicals;   // 组成字根
    std::vector<SemanticVector> semanticVectors;  // 语义向量
    std::map<std::string, double> attributes;     // 属性特征

public:
    WuBiSymbol(const std::string& wubiCode, const std::string& chineseChar);
    
    // 获取五笔编码
    std::string getCode() const { return code; }
    
    // 获取汉字
    std::string getCharacter() const { return character; }
    
    // 获取字根
    std::vector<std::string> getRadicals() const { return radicals; }
    
    // 计算语义向量
    SemanticVector computeSemanticVector() const;
    
    // 计算与其他符号的相似度
    double similarity(const WuBiSymbol& other) const;
    
    // 生成符号表示
    std::string toString() const;
};

#endif // WUBI_SYMBOL_H